package priv.conceit.sc.hoxton.common.web.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * sc-hoxton
 *
 * @author Conceit
 * 2020/6/23 增加方法
 * @since 1.0.0, 2020/6/23
 */
@AllArgsConstructor
@Getter
public enum WebExceptionEnum {
	/**
	 * 默认异常
	 */
	EX_SYSTEM_ERROR(10000, "系统繁忙！"),
	EX_SYSTEM_FALLBACK(10001, "系统服务暂时不可用！请稍后重试！"),

	/**
	 * 用户相关
	 */
	EX_USER_TOKEN_ERROR(11100, "用户token 无效！"),
	EX_USER_TOKEN_GENERATE_ERROR(11101, "用户token生成失败！"),
	EX_USER_TOKEN_PARSE_ERROR(11102, "用户token解析失败！"),

	EX_USER_ACCOUNT_ERROR(11200, "用户账户无效！"),
	EX_USER_ID_INVALID(11201, "用户id 无效！"),
	EX_USER_ID_REPEAT(11202, "用户id 重复！"),
	EX_USER_STATUS_INVALID(11203, "用户状态无效！"),
	EX_USER_PASSWORD_INVALID(11204, "用户密码无效！"),

	EX_USER_AUTH_FAILURE(11205, "用户认证失败"),
	EX_USER_ACCESS_DENIED(11206, "用户权限不足"),

	/**
	 * 文件相关
	 */
	EX_FILE_ID_INVALID(12000, "文件id 无效！"),
	EX_FILE_UPLOAD_ISNULL(12001, "上传文件不能为空！");


	private Integer key;
	private String value;

	public static WebExceptionEnum getEnumByKey(Integer key) {

		return Arrays.stream(WebExceptionEnum.values()).filter(x -> x.key.equals(key)).findFirst().orElseGet(null);
	}
}
